/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vue;

import application.FicheMediaController;
import application.GestionArtistesController;
import dao.MediaDAO;
import dao.MediaDAOAuteur;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import media.Media;
import media.MediaAuteur;
import media.Video;

/**
 * Classe qui défini la fiche média d'une vidéo
 * @author Florian Minin & Khémon Beh
 */
public class FicheMediaVideo extends FicheMediaAbstract {

    /**
     * Attributs
     */
    private JTextField txtFieldAnnee;
    private JTextField txtFieldTitre;
    private JLabel lblValAuteurs;
    private JButton btnEditerAuteurs;
    private MediaDAOAuteur dao;

    /**
     * Constructeur
     * @param video
     */
    public FicheMediaVideo(Video video) {
        super(video);
        initComponentsGenerique();
        initComponents();
    }

    /**
     * Constructeur par défaut
     */
    public FicheMediaVideo() {
        super(new Video());
        initComponentsGenerique();
        initComponents();
    }

    /**
     * initialise les composants
     */
    private void initComponents() {
        JLabel lblTitre = new JLabel("Titre");
        lblTitre.setFont(new Font("Lucida Grande", Font.BOLD, 13));
        lblTitre.setBounds(18, 291, 61, 16);
        pnlPrincipal.add(lblTitre);

        txtFieldTitre = new JTextField();
        txtFieldTitre.setBounds(18, 303, 501, 28);
        pnlPrincipal.add(txtFieldTitre);
        txtFieldTitre.setColumns(10);

        JLabel lblAnnee = new JLabel("Année de sortie");
        lblAnnee.setFont(new Font("Lucida Grande", Font.BOLD, 13));
        lblAnnee.setBounds(280, 249, 116, 16);
        pnlPrincipal.add(lblAnnee);

        txtFieldAnnee = new JTextField();
        txtFieldAnnee.setText("2010");
        txtFieldAnnee.setColumns(10);
        txtFieldAnnee.setBounds(276, 261, 243, 28);
        pnlPrincipal.add(txtFieldAnnee);

        JLabel lblAuteurs = new JLabel("Auteurs");
        lblAuteurs.setFont(new Font("Lucida Grande", Font.BOLD, 13));
        lblAuteurs.setBounds(18, 330, 61, 16);
        pnlPrincipal.add(lblAuteurs);

        lblValAuteurs = new JLabel("");
        lblValAuteurs.setBounds(18, 398, 295, 54);
        pnlPrincipal.add(lblValAuteurs);

        btnEditerAuteurs = new JButton("Editer les auteurs");
        btnEditerAuteurs.setBounds(337, 412, 182, 29);
        pnlPrincipal.add(btnEditerAuteurs);

        setToModeConsultation();
    }

    /**
     * abonne les boutons à un controleur
     * @param ctrl
     */
    public void abonnementComponents(FicheMediaController ctrl) {
        btnModifier.addActionListener(ctrl);
        btnSauvegarder.addActionListener(ctrl);
        btnEditerAuteurs.addActionListener(ctrl);
    }

    @Override
    public void setToModeModification() {
        super.setToModeModification();
        txtFieldAnnee.setEditable(true);
        txtFieldTitre.setEditable(true);
    }

    @Override
    public void setToModeConsultation() {
        super.setToModeConsultation();
        txtFieldAnnee.setEditable(false);
        txtFieldTitre.setEditable(false);
    }

    @Override
    public void saveModification() {
        Video video = (Video) media;
        video.setAnnee(txtFieldAnnee.getText());
        video.setDescription(jtxtValDescription.getText());
        video.setNote(comboBoxNote.getSelectedIndex());
        video.setTitre(txtFieldTitre.getText());
        lblValAuteurs.setText(video.afficherAuteurs());
        this.setTitle("Fiche Video : " + video.getTitre());
    }

    @Override
    public void chargerMedia(Media media) {
        super.chargerMedia(media);
        Video video = (Video) media;
        txtFieldAnnee.setText(String.valueOf(video.getAnnee()));
        txtFieldTitre.setText(video.getTitre());
        lblValAuteurs.setText(video.afficherAuteurs());
        setTitle("Fiche Video : " + video.getTitre());
    }

    /**
     * Méthode qui ouvre la fenetre de gestion d'auteur
     * @param dao
     */
    public void ouvreGestionAuteur(MediaDAOAuteur dao) {
        if (vueGestion != null) {
            vueGestion.dispose();
        }
        vueGestion = new VueGestionAuteur();
        GestionArtistesController controller = new GestionArtistesController(vueGestion, dao, (MediaAuteur) media);
        vueGestion.abonnerComponents(controller);
        vueGestion.setVisible(true);
        controller.chargementDonnees();
    }

    @Override
    public void associerDAO(MediaDAO dao) {
        this.dao = (MediaDAOAuteur) dao;
    }

    public MediaDAO getDAO(){
        return dao;
    }
}
